// TodoController.java
package org.example.data_work_demo1.controller;

import org.example.data_work_demo1.model.Todo;
import org.example.data_work_demo1.model.User;
import org.example.data_work_demo1.service.TodoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/todos")
public class TodoController {

    @Autowired
    private TodoService todoService;

    // 添加待办事项 (POST请求)
    @PostMapping
    public ResponseEntity<Void> addTodo(@RequestBody Todo todo) {
        todoService.addTodo(todo);
        return ResponseEntity.ok().build();
    }

    // 删除待办事项 (DELETE请求)
    @DeleteMapping("/{todoId}")
    public void deleteTodo(@PathVariable Integer todoId) {
        todoService.deleteTodo(todoId);
    }

    // 更新待办事项 (PUT请求，支持 /api/todos/{todoId})
    @PutMapping("/{todoId}")
    public void updateTodoById(@PathVariable Integer todoId, @RequestBody Todo todo) {
        todo.setTodoId(todoId);
        todoService.updateTodo(todo);
    }

    // 查询所有待办事项 (GET请求)
    @GetMapping
    public List<Todo> getAllTodos() {
        return todoService.getAllTodos();
    }

    // 按用户查询待办事项 (GET请求)
    @GetMapping("/user/{userId}")
    public List<Todo> getTodosByUserId(@PathVariable Integer userId) {
        return todoService.getTodosByUserId(userId);
    }

    // 按状态查询待办事项 (GET请求)
    @GetMapping("/status")
    public List<Todo> getTodosByStatus(@RequestParam String status) {
        return todoService.getTodosByStatus(status);
    }

    // 模糊查询待办事项标题 (GET请求)
    @GetMapping("/search")
    public List<Todo> searchTodosByTitle(@RequestParam String keyword) {
        return todoService.searchTodosByTitle(keyword);
    }

    @GetMapping("/{id}")
    public ResponseEntity<Todo> getTodoById(@PathVariable Integer id) {
        Todo todo = todoService.getTodoById(id);
        if (todo == null) {
            return ResponseEntity.notFound().build();
        }
        return ResponseEntity.ok(todo);
    }
}
